/*
 * 后台管理相关API
 */
import * as API from "./api";

/**
 * 登录接口
 * @param {Object} data {username, password}
 */
export const loginAPI = (data) => {
  return API.POST('/admin/login', data);
};

/**
 * 退出登录
 */
export const logoutAPI = () => {
  return API.POST('/admin/logout');
};

/**
 * 获取用户信息
 */
export const getUserInfoAPI = () => {
  return API.GET('/admin/userInfo');
};

// ==================== 业务统计管理接口 ====================

/**
 * 分页查询业务统计列表
 * @param {Object} params {currentPage, pageSize, startDate, endDate}
 */
export const getBusinessStatsAPI = (params) => {
  return API.GET('/admin/business-stats', params);
};

/**
 * 新增业务统计
 * @param {Object} data 业务统计数据
 */
export const addBusinessStatsAPI = (data) => {
  return API.POST('/admin/business-stats', data);
};

/**
 * 修改业务统计
 * @param {Number} id 业务统计ID
 * @param {Object} data 业务统计数据
 */
export const updateBusinessStatsAPI = (id, data) => {
  return API.PUT(`/admin/business-stats/${id}`, data);
};

/**
 * 删除业务统计
 * @param {Number} id 业务统计ID
 */
export const deleteBusinessStatsAPI = (id) => {
  return API.DELETE(`/admin/business-stats/${id}`);
};

// ==================== 用户注册相关接口 ====================

/**
 * 检查用户名是否存在
 * @param {String} username 用户名
 */
export const checkUsernameAPI = (username) => {
  return API.GET('/admin/check-username', { username });
};

/**
 * 用户注册
 * @param {Object} data {username, password, inviteCode}
 */
export const registerAPI = (data) => {
  return API.POST('/admin/user', data);
};

// ==================== 项目总览管理接口 ====================

/**
 * 分页查询项目总览列表
 * @param {Object} params {currentPage, pageSize, startDate, endDate}
 */
export const getProjectOverviewAPI = (params) => {
  return API.GET('/admin/project-overview', params);
};

/**
 * 新增项目总览
 * @param {Object} data 项目总览数据
 */
export const addProjectOverviewAPI = (data) => {
  return API.POST('/admin/project-overview', data);
};

/**
 * 修改项目总览
 * @param {Number} id 项目总览ID
 * @param {Object} data 项目总览数据
 */
export const updateProjectOverviewAPI = (id, data) => {
  return API.PUT(`/admin/project-overview/${id}`, data);
};

/**
 * 删除项目总览
 * @param {Number} id 项目总览ID
 */
export const deleteProjectOverviewAPI = (id) => {
  return API.DELETE(`/admin/project-overview/${id}`);
};

/**
 * 下载项目总览Excel模板
 */
export const downloadProjectTemplateAPI = () => {
  return API.FILE({
    method: 'get',
    url: '/admin/project-overview/template',
    responseType: 'blob'
  });
};

/**
 * 批量导入项目总览Excel
 * @param {File} file Excel文件
 */
export const importProjectExcelAPI = (file) => {
  const formData = new FormData();
  formData.append('file', file);
  return API.FILESubmit('/admin/project-overview/import', formData, {});
};

// ==================== 标注员拉框数实时看板接口 ====================

/**
 * 分页查询标注员拉框数列表
 * @param {Object} params {currentPage, pageSize, startDate, endDate, labelerName}
 */
export const getLabelerBoxCountAPI = (params) => {
  return API.GET('/admin/labeler-box-count/query', params);
};

/**
 * 新增标注员拉框数记录
 * @param {Object} data 标注员拉框数数据
 */
export const addLabelerBoxCountAPI = (data) => {
  return API.POST('/admin/labeler-box-count/add', data);
};

/**
 * 修改标注员拉框数记录
 * @param {Number} id 标注员拉框数记录ID
 * @param {Object} data 标注员拉框数数据
 */
export const updateLabelerBoxCountAPI = (id, data) => {
  return API.PUT(`/admin/labeler-box-count/update/${id}`, data);
};

/**
 * 删除标注员拉框数记录
 * @param {Number} id 标注员拉框数记录ID
 */
export const deleteLabelerBoxCountAPI = (id) => {
  return API.DELETE(`/admin/labeler-box-count/${id}`);
};

/**
 * 下载标注员拉框数Excel模板
 */
export const downloadLabelerTemplateAPI = () => {
  return API.FILE({
    method: 'get',
    url: '/admin/labeler-box-count/template',
    responseType: 'blob'
  });
};

/**
 * 批量导入标注员拉框数Excel
 * @param {File} file Excel文件
 */
export const importLabelerExcelAPI = (file) => {
  const formData = new FormData();
  formData.append('file', file);
  return API.FILESubmit('/admin/labeler-box-count/import', formData, {});
};

// ==================== 质检质检量统计图接口 ====================

/**
 * 分页查询质检统计列表
 * @param {Object} params {currentPage, pageSize, startDate, endDate, inspectorName}
 */
export const getQcStatisticsAPI = (params) => {
  return API.GET('/admin/qc-statistics', params);
};

/**
 * 新增质检统计记录
 * @param {Object} data 质检统计数据
 */
export const addQcStatisticsAPI = (data) => {
  return API.POST('/admin/qc-statistics', data);
};

/**
 * 修改质检统计记录
 * @param {Number} id 质检统计记录ID
 * @param {Object} data 质检统计数据
 */
export const updateQcStatisticsAPI = (id, data) => {
  return API.PUT(`/admin/qc-statistics/${id}`, data);
};

/**
 * 删除质检统计记录
 * @param {Number} id 质检统计记录ID
 */
export const deleteQcStatisticsAPI = (id) => {
  return API.DELETE(`/admin/qc-statistics/${id}`);
};

/**
 * 下载质检统计Excel模板
 */
export const downloadQcTemplateAPI = () => {
  return API.FILE({
    method: 'get',
    url: '/admin/qc-statistics/template',
    responseType: 'blob'
  });
};

/**
 * 批量导入质检统计Excel
 * @param {File} file Excel文件
 */
export const importQcExcelAPI = (file) => {
  const formData = new FormData();
  formData.append('file', file);
  return API.FILESubmit('/admin/qc-statistics/import', formData, {});
};

// ==================== 优秀标注员荣誉榜接口 ====================

/**
 * 分页查询优秀标注员列表
 * @param {Object} params {currentPage, pageSize, statYear, statMonth}
 */
export const getExcellentLabelerAPI = (params) => {
  return API.GET('/admin/excellent-labeler', params);
};

/**
 * 新增优秀标注员记录
 * @param {Object} data 优秀标注员数据
 */
export const addExcellentLabelerAPI = (data) => {
  return API.POST('/admin/excellent-labeler', data);
};

/**
 * 修改优秀标注员记录
 * @param {Number} id 优秀标注员记录ID
 * @param {Object} data 优秀标注员数据
 */
export const updateExcellentLabelerAPI = (id, data) => {
  return API.PUT(`/admin/excellent-labeler/${id}`, data);
};

/**
 * 删除优秀标注员记录
 * @param {Number} id 优秀标注员记录ID
 */
export const deleteExcellentLabelerAPI = (id) => {
  return API.DELETE(`/admin/excellent-labeler/${id}`);
};

/**
 * 下载优秀标注员Excel模板
 */
export const downloadExcellentLabelerTemplateAPI = () => {
  return API.FILE({
    method: 'get',
    url: '/admin/excellent-labeler/template',
    responseType: 'blob'
  });
};

/**
 * 批量导入优秀标注员Excel
 * @param {File} file Excel文件
 */
export const importExcellentLabelerExcelAPI = (file) => {
  const formData = new FormData();
  formData.append('file', file);
  return API.FILESubmit('/admin/excellent-labeler/import', formData, {});
};

/**
 * 刷新排名
 * @param {Object} params {statYear, statMonth}
 */
export const refreshLabelerRankingAPI = (params) => {
  return API.POST('/admin/excellent-labeler/refresh-ranking', params);
};

// ==================== 优秀项目经理（TOP8）接口 ====================

/**
 * 分页查询优秀项目经理列表
 * @param {Object} params {currentPage, pageSize, statYear, statMonth}
 */
export const getExcellentManagerAPI = (params) => {
  return API.GET('/admin/excellent-manager', params);
};

/**
 * 新增优秀项目经理记录
 * @param {Object} data 优秀项目经理数据
 */
export const addExcellentManagerAPI = (data) => {
  return API.POST('/admin/excellent-manager', data);
};

/**
 * 修改优秀项目经理记录
 * @param {Number} id 优秀项目经理记录ID
 * @param {Object} data 优秀项目经理数据
 */
export const updateExcellentManagerAPI = (id, data) => {
  return API.PUT(`/admin/excellent-manager/${id}`, data);
};

/**
 * 删除优秀项目经理记录
 * @param {Number} id 优秀项目经理记录ID
 */
export const deleteExcellentManagerAPI = (id) => {
  return API.DELETE(`/admin/excellent-manager/${id}`);
};

/**
 * 下载优秀项目经理Excel模板
 */
export const downloadManagerTemplateAPI = () => {
  return API.FILE({
    method: 'get',
    url: '/admin/excellent-manager/template',
    responseType: 'blob'
  });
};

/**
 * 批量导入优秀项目经理Excel
 * @param {File} file Excel文件
 */
export const importManagerExcelAPI = (file) => {
  const formData = new FormData();
  formData.append('file', file);
  return API.FILESubmit('/admin/excellent-manager/import', formData, {});
};

/**
 * 刷新项目经理排名
 * @param {Object} params {statYear, statMonth}
 */
export const refreshManagerRankingAPI = (params) => {
  return API.POST('/admin/excellent-manager/refresh-ranking', params);
};

// ==================== 数据项目实时看板接口 ====================

/**
 * 分页查询数据项目列表
 * @param {Object} params {currentPage, pageSize, projectName, projectStatus}
 */
export const getDataProjectAPI = (params) => {
  return API.GET('/admin/data-project', params);
};

/**
 * 新增数据项目记录
 * @param {Object} data 数据项目数据
 */
export const addDataProjectAPI = (data) => {
  return API.POST('/admin/data-project', data);
};

/**
 * 修改数据项目记录
 * @param {Number} id 数据项目记录ID
 * @param {Object} data 数据项目数据
 */
export const updateDataProjectAPI = (id, data) => {
  return API.PUT(`/admin/data-project/${id}`, data);
};

/**
 * 删除数据项目记录
 * @param {Number} id 数据项目记录ID
 */
export const deleteDataProjectAPI = (id) => {
  return API.DELETE(`/admin/data-project/${id}`);
};

/**
 * 下载数据项目Excel模板
 */
export const downloadDataProjectTemplateAPI = () => {
  return API.FILE({
    method: 'get',
    url: '/admin/data-project/template',
    responseType: 'blob'
  });
};

/**
 * 批量导入数据项目Excel
 * @param {File} file Excel文件
 */
export const importDataProjectExcelAPI = (file) => {
  const formData = new FormData();
  formData.append('file', file);
  return API.FILESubmit('/admin/data-project/import', formData, {});
};

// ==================== 大屏配置接口 ====================

/**
 * 获取平台标题
 */
export const getPlatformTitleAPI = () => {
  return API.GET('/admin/platform-title');
};

/**
 * 更新平台标题
 * @param {Object} data {title}
 */
export const updatePlatformTitleAPI = (data) => {
  return API.POST('/admin/platform-title/update', data);
};

// ==================== Excel导入导出接口 ====================

/**
 * 下载业务统计Excel模板
 */
export const downloadTemplateAPI = () => {
  return API.FILE({
    method: 'get',
    url: '/admin/business-stats/template',
    responseType: 'blob'
  });
};

/**
 * 批量导入业务统计Excel
 * @param {File} file Excel文件
 */
export const importExcelAPI = (file) => {
  const formData = new FormData();
  formData.append('file', file);
  return API.FILESubmit('/admin/business-stats/import', formData, {});
};
